<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <!--   
    2：有已知以下某公司员工薪金信息，把每一位员工的salary薪金信息 加2000，
       并返回新数组，注意：不影响原数组
    let persons = [
        {
            username:'张飞',
            sex:'男',
            salary:50000 
        },
        {
            username:'关羽',
            sex:'男',
            salary:60000
        }
    ] -->
</body>

</html>
<script>
    let persons = [
        {
            username: '张飞',
            sex: '男',
            salary: 50000
        },
        {
            username: '关羽',
            sex: '男',
            salary: 60000
        }
    ]

    let newPersons = deepCopy(persons);

    newPersons = newPersons.map(function (item) {
        item.salary += 2000;
        return item;
    });


    console.log(newPersons);
    console.log(persons,"原");



    function getType(data) {
        var type = Object.prototype.toString.call(data).slice(8, -1);
        // 返回类型
        return type;
    }

    function deepCopy(data) { // data-进行拷贝的数据
        // 1.获取数据类型
        var type = getType(data);

        // 2.类型判断
        if (type == 'Array') { // 为数组
            var res = [];
        } else if (type == 'Object') { // 为对象
            var res = {};
        } else {
            // 不考虑深浅拷贝，直接返回
            return data;
        }

        // 3.遍历数据一一赋值
        for (var key in data) { // key-下标/键名
            // 5.判断嵌套的数据类型
            if (getType(data[key]) == 'Array' || getType(data[key]) == 'Object') {
                // 深拷贝之后再进行赋值
                res[key] = deepCopy(data[key]);
            } else {
                // 直接赋值
                res[key] = data[key];
            }
        }
        // 4.返回复制好的数据
        return res;
    }
</script>